package impl

import (
	"context"
	"gitee.com/hexug/kube-sync/apps/tofile"
	"os"
	"path/filepath"
)

func (s *svcImpl) WriterYaml(ctx context.Context, req *tofile.WriterYamlRequest) error {
	if err := req.Validate(); err != nil {
		return err
	}
	for _, item := range req.Items {
		dir := filepath.Dir(item.Path)

		// 创建目录（包括所有必要的父目录）
		// 0755表示目录权限：所有者可读写执行，组和其他用户可读执行
		if err := os.MkdirAll(dir, 0755); err != nil {
			return err
		}

		// 创建或截断文件
		// os.Create会创建文件，如果文件已存在则截断它
		file, err := os.Create(item.Path)
		if err != nil {
			return err
		}
		defer file.Close() // 确保文件最终会被关闭
		// 写入所有字节切片
		for i, b := range item.YamlData {
			if i > 0 {
				if _, err := file.WriteString("---\n"); err != nil {
					return err
				}
			}
			if _, err := file.Write(b); err != nil {
				return err
			}
			if len(b) > 0 && b[len(b)-1] != '\n' {
				if _, err := file.WriteString("\n"); err != nil {
					return err
				}
			}
		}
	}
	return nil
}
